dhcpv4: use leasetime from a->lease
authorDavid Härdeman <[email protected]>
Thu, 9 Oct 2025 04:35:26 +0000 (06:35 +0200)
committerÁlvaro Fernández Rojas <[email protected]>
Tue, 4 Nov 2025 07:50:29 +0000 (08:50 +0100)
Note that a->leasetime can ever only be zero or == a->lease->leasetime,
so simplify this a bit in preparation for the next patch.

src/config.c also changes a->leasetime, but always to match
a->lease->leasetime.

Signed-off-by: David Härdeman <[email protected]>
Link: https://github.com/openwrt/odhcpd/pull/292
Signed-off-by: Álvaro Fernández Rojas <[email protected]>
src/dhcpv4.c

index 372b2d344a6966c9f43335e9e6376c1490d756fb..56c383156be882a556b93beebee2f70f84a9d6cd 100644 (file)
@@ -549,23 +549,20 @@ dhcpv4_lease(struct interface *iface, enum dhcpv4_msg req_msg, const uint8_t *re
                                if (l->hostname)
                                        a->hostname = strdup(l->hostname);
 
-                               if (l->leasetime)
-                                       a->leasetime = l->leasetime;
-
                                list_add(&a->lease_list, &l->assignments);
                                a->lease = l;
                        }
                }
 
                /* See if we need to clamp the requested leasetime */
-               uint32_t my_leasetime;
-               if (a->leasetime)
-                       my_leasetime = a->leasetime;
+               uint32_t max_leasetime;
+               if (a->lease && a->lease->leasetime)
+                       max_leasetime = a->lease->leasetime;
                else
-                       my_leasetime = iface->dhcp_leasetime;
+                       max_leasetime = iface->dhcp_leasetime;
 
-               if ((*req_leasetime == 0) || (my_leasetime < *req_leasetime))
-                       *req_leasetime = my_leasetime;
+               if ((*req_leasetime == 0) || (max_leasetime < *req_leasetime))
+                       *req_leasetime = max_leasetime;
 
                if (req_msg == DHCPV4_MSG_DISCOVER) {
                        a->flags &= ~OAF_BOUND;